# 每个文件的依赖类
from typing import List


class DependData:
    def __init__(self, name: str, path: str, depend: List[str]):
        """
        初始化 DependData 实例

        :param name: 文件名
        :param path: 文件路径
        :param depend: 依赖列表，默认为空列表
        """
        self.name: str = name
        self.path: str = path
        self.depend = []
        self.depend: List[str] = classify_imports(path, depend)
        # self.depend: List[str] = depend

    #
    def add_dependency(self, dependency: str):
        """
        添加一个新的依赖到依赖列表中

        :param dependency: 要添加的依赖项
        """
        self.depend.append(dependency)

    def __str__(self):
        """
        返回 DependData 对象的字符串表示形式
        """
        return f"文件名: {self.name}, 路径: {self.path}, 所继承的类: {self.depend}"


def classify_imports(class_path, imports):
    # 假设类路径的格式为相对路径，并且项目源代码位于 src/main/java 下
    # 移除文件扩展名
    # base_path = class_path.rsplit('.', 1)[0].replace('/', '.')
    base_path = '.'.join(class_path.split('/')[8:12][:-1])  # 截取倒数第四个到倒数第二个部分，并转换为点分隔的字符串

    print(f"base_path ： {base_path}")
    # 区分内部和外部导入
    internal_imports = []
    external_imports = []

    for imp in imports:
        # 简化处理，假设所有项目内部导入都包含 base_path
        if imp.find(base_path) != -1:
            internal_imports.append(imp)
        else:
            external_imports.append(imp)

    return internal_imports
